<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// * 在函数名后面加上 () 就是对函数的调用，函数内的代码会执行。
	//
	// * 函数名后面不加() 不会调用函数，函数内的代码也不会执行；
	// function fn(){
	// 	console.log("fn");
	// }
	// fn;
	// console.log(fn);// 输出函数
	// console.log(fn());// 函数的返回值：undefined
	
	// * 函数名本质上是个变量名，通过函数名可以引用到函数本身。
	// // 函数名：fn
	// function fn(){
	// 	console.log("fn");
	// }
	// // 函数名：run
	// let run = function(){
	// 	console.log("run");
	// }
	// const a = fn;// 将函数fn赋值给常量a
	// const b = run;// 将函数run赋值给常量b
	// fn();// 调用函数fn
	// run();// 调用函数run
	//
	// fn=1;
	// run=2;
	// run();// TypeError: run is not a function
	//
	
	
	
	// * 调用函数的四种场景
	// * 直接调用
	// function fn(){
	//
	// };
	// fn();
	
	
	// * new 操作符
	// function fn(){
	// 	console.log("fn");
	// }
	// new fn();
	
	// * apply
	// function fn(a,b){
	// 	console.log("fn",this,a,b);//fn [1, 2, 3] 1 2
	// }
	// // 将函数体内的this指向为：[1,2,3]
	// // 传递的实参：1 2
	// fn.apply([1,2,3],[1,2])
	
	
	// * call
	// function fn(a,b){
	// 	console.log("fn",this,a,b);//fn [1, 2, 3] 1 2
	// }
	// // 将函数体内的this指向为：[1,2,3]
	// // 传递的实参：1 2
	// fn.call([1,2,3],1,2);
	
	// * bind
	function fn(a,b,userName,age){
		console.log("fn",this,a,b,userName,age);
	}
	fn.bind({a:1,b:2},100,200)("zhangsan",12);
</script>
</html>